/*
* ////////////////////////////////////////////////
*
* 开发者：AZPEP
* 友情链接：
*	-	B站：		零分的考卷			https://space.bilibili.com/257391258
*	-	Github：	AZPEP-BiliBili		https://github.com/AZPEP-BiliBili
*	-	Gitee：		AZPEP_BiliBili		https://gitee.com/AZPEP_BiliBili
*
* CopyRight AZPEP
*
* ////////////////////////////////////////////////
*/
#include "Global_Include.h"

std::wstring string2wstringE(std::string str)
{
	std::wstring result;
	//获取缓冲区大小，并申请空间，缓冲区大小按字符计算
	int len = MultiByteToWideChar(CP_ACP, 0, str.c_str(), str.size(), NULL, 0);
	TCHAR* buffer = new TCHAR[len + 1];
	//多字节编码转换成宽字节编码
	MultiByteToWideChar(CP_ACP, 0, str.c_str(), str.size(), buffer, len);
	buffer[len] = '\0';             //添加字符串结尾
	//删除缓冲区并返回值
	result.append(buffer);
	delete[] buffer;
	return result;
}


//将wstring转换成string
std::string wstring2stringE(std::wstring wstr)
{
	std::string result;
	//获取缓冲区大小，并申请空间，缓冲区大小事按字节计算的
	int len = WideCharToMultiByte(CP_ACP, 0, wstr.c_str(), wstr.size(), NULL, 0, NULL, NULL);
	char* buffer = new char[len + 1];
	//宽字节编码转换成多字节编码
	WideCharToMultiByte(CP_ACP, 0, wstr.c_str(), wstr.size(), buffer, len, NULL, NULL);
	buffer[len] = '\0';
	//删除缓冲区并返回值
	result.append(buffer);
	delete[] buffer;
	return result;
}

size_t ReplaceE(std::wstring& strValue, const std::wstring& strOld, const std::wstring& strNew)
{
	size_t iCount = 0;
	if (strOld.empty())
		return iCount;
	std::wstring::size_type iFind = 0;
	while (true)
	{
		iFind = strValue.find(strOld, iFind);
		if (std::wstring::npos == iFind)
			break;
		strValue.replace(iFind, strOld.size(), strNew);
		++iCount;
		iFind += strNew.size();
	}
	return iCount;
}

std::wstring Dword2WstringE(DWORD d) {
	std::wstringstream ss;
	ss << d;
	return ss.str();
}